package co.kr.bettersoft.carrotmerchantmobile.activity;
/**
 * MainTabs
 * 메인 - 하단 탭이다
 */
import java.util.List;

import co.kr.bettersoft.carrotmerchantmobile.common.CommonConstant;


import android.app.Activity;
import android.app.ActivityManager;
import android.app.TabActivity;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Window;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;

public class MainTabs extends TabActivity implements OnTabChangeListener{
	String TAG ="MainTabsPage";

	public static Activity mainTabs ;

	public static TabHost tabhost;		// 탭호스트
	static String merchantId;			// 가맹점 아이디
	static String countryCode;
	static String languageCode;
	static Boolean autoLogin ;		

	// 탭 높이
	public static int TAB_HEIGHT = CommonConstant.TAB_HEIGHT;;
	
	// 핸들러
	static Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			try{
				Bundle b = msg.getData();		
				if(b.getInt("init")==1){		// 홈갔다가 다른 아디로 왔을때. 탭을 0번 탭으로 초기화
					tabhost.getTabWidget().setCurrentTab(0);		// 탭 표시도 0번째
					tabhost.setCurrentTab(0);						// 화면도 0 번째
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	};
	public static void initTab(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("init", 1);		// 홈갔다가 다른 아디로 왔을때. 탭을 0번 탭으로 초기화
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE );	// 타이틀바 제거
		setContentView(R.layout.main_tabs_page);
		Log.d(TAG,"MainTabs");

		mainTabs = MainTabs.this;

		//  전달 받은 가맹점 정보
		Intent receiveIntent = getIntent();						
		merchantId = receiveIntent.getStringExtra("merchantId");
		countryCode = receiveIntent.getStringExtra("countryCode");
		languageCode = receiveIntent.getStringExtra("languageCode");
		autoLogin = receiveIntent.getBooleanExtra("autoLogin",false);

		tabhost = getTabHost();
		tabhost.setOnTabChangedListener(this);		// 이걸 해줘야 체인지 효과가..

		// 탭 화면에 데이터 전달 -> 하지않고 탭 값을 공통으로 사용
		Intent mainActivityHomeIntent = new Intent(this, MainHome.class);
		Intent mainActivityNoticeIntent = new Intent(this, MainNotice.class);
		Intent mainActivityMileageIntent = new Intent(this, MainMileage.class);
		Intent mainActivitySettingsIntent = new Intent(this, MainSettings.class);

		// 하단 탭
		tabhost.addTab(
				tabhost.newTabSpec("tab_1")
				.setIndicator(getResources().getString(R.string.tab_home), getResources().getDrawable(R.drawable.tab01_indicator))	
				.setContent(mainActivityHomeIntent));							// 홈  tab_home
		tabhost.addTab(tabhost.newTabSpec("tab_2")
				.setIndicator(getResources().getString(R.string.tab_notice), getResources().getDrawable(R.drawable.tab02_indicator))				// 공지사항
				.setContent(mainActivityNoticeIntent));  
		tabhost.addTab(tabhost.newTabSpec("tab_3")
				.setIndicator(getResources().getString(R.string.tab_mileage), getResources().getDrawable(R.drawable.tab03_indicator))			// 고객 마일리지
				.setContent(mainActivityMileageIntent));
		tabhost.addTab(tabhost.newTabSpec("tab_4")
				.setIndicator(getResources().getString(R.string.tab_settings), getResources().getDrawable(R.drawable.tab04_indicator))				// 설정
				.setContent(mainActivitySettingsIntent));  

		// xml 상에서 탭 높이 지정이 되지 않기 때문에 소스 상에서 탭 사이즈를 지정해준다.
		for(int tab = 0; tab<tabhost.getTabWidget().getChildCount(); ++tab){			
			tabhost.getTabWidget().getChildAt(tab).setBackgroundDrawable(getResources().getDrawable(R.drawable.design_bg_tab_menu));
		}

	}

	@Override
	public void onTabChanged(String tabId) {
		//		// tab 의 텍스트 색상 변경
		//		for(int i=0; i<tabhost.getTabWidget().getChildCount(); i++){
		//			final View vw= tabhost.getTabWidget().getChildTabViewAt(i);
		//			if(vw!=null){
		//				final View tv1 = vw.findViewById(android.R.id.title);
		//				if(tv1 instanceof TextView){
		//					//text color
		//					((TextView) tv1).setTextColor(getResources().getColor(android.R.color.black));			// 기본 텍스트 색상
		//				}
		//			}
		//		}
		//		// 선택된 탭의 텍스트 색상
		//		final View vw= tabhost.getTabWidget().getChildTabViewAt(tabhost.getCurrentTab());
		//		if(vw!=null){
		//			final View tv1 = vw.findViewById(android.R.id.title);
		//			if(tv1 instanceof TextView){
		//				//text color
		//				((TextView) tv1).setTextColor(getResources().getColor(android.R.color.white));			// 선택된 텍스트 색상
		//			}
		//		}
	}

	
	/*
	 * 프로세스가 최상위로 실행중인지 검사.
	 * @return true = 최상위
	 */
	/**
	 * isForeGround
	 *  프로세스가 최상위로 실행중인지 검사한다
	 *
	 * @param
	 * @param
	 * @return rtn
	 */
	public Boolean isForeGround(){
		ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE );
		List<RunningTaskInfo> list = am.getRunningTasks(1);
		ComponentName cn = list.get(0). topActivity;
		String name = cn.getPackageName();
		Boolean rtn = false;
		if(name.indexOf(getPackageName()) > -1){
			rtn = true;
		} else{
			rtn = false;
		}
		return rtn;
	}
	/**
	 * onResume
	 * 액티비티 리쥼시 바탕화면 갔다왔는지 확인해서 로그인창을 띄운다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	@Override
	protected void onResume() {
		super.onResume();
		if(CommonConstant.comeBack){		// 바탕화면 갔다옴
			//    		 CommonUtils.didYouBack = false;
			Intent LoginIntent = new Intent(MainTabs.this, Login.class);
			startActivity(LoginIntent);
//			finish();	// 죽지말고 기다려.
		}
	}
	/**
	 * onPause
	 * 종료인지, 홈버튼으로 나간건지 확인하여 처리한다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	@Override
	protected void onPause() {
		super.onPause();
		if(!isForeGround()){  
			if(!autoLogin){				// 자동 로그인 아닐 경우에만 로그인 창이 뜬다.
				//				CommonUtils.didYouBack = true;
				CommonConstant.comeBack = true;				// 다시 돌아왔을때 알아볼수 있도록 함.
				CommonConstant.tempMyID = merchantId;				// 다시 돌아왔을때 알아볼수 있도록 함.
			}
			// 자동 로그인 설정이 되어있다면 뜨지 않는다.
		}
	}


}
